#ifndef _timberyard_utils_h_
#define _timberyard_utils_h_

#include <iostream>
#include <sstream>

namespace Timberyard {

// pointer prettyprinter

std::ostream& PrintPointer_(std::ostream& o,const void* p);

template <typename T>
std::ostream& PrintPointer(std::ostream& o,const T* p) {
	return PrintPointer_(o,reinterpret_cast<const void*>(p));
}

class Uncopyable {
	protected:
		Uncopyable() {}
		~Uncopyable() {}
	private:
		Uncopyable(const Uncopyable &x) {}
		Uncopyable& operator=(const Uncopyable &x) {return (*this);}
};

template <typename Src>
	std::string ToString(const Src& s) {
		std::stringstream x;
		x<<s;
		return x.str();
	}

} // namespace Timberyard

#endif // _timberyard_utils_h_
